/*!\mainpage XDL2Graph project
 *@section intro_sec Introduction
 *The program XDL2Graph is useful for translate a XDL file (hardware description) in a dot file (Graphviz extension).
 *The created dot file is used to draw a interconnection module graph.
 *@section copmile_sec How to compile the soure code
 *@subsection req_tool_sub Required Tools
 *@subsubsection flex_sub Flex or Flex++ - lexical scanner
 *Flex is a tool for generating scanners. A scanner, sometimes called a tokenizer, is a program which recognizes lexical patterns in text.
 *The flex program reads user-specified input files, or its standard input if no file names are given, for a description of a scanner to generate.
 *The description is in the form of pairs of regular expressions and C(Flex) or C++(Flex++) code, called rules. <A HREF="http://flex.sourceforge.net/">Flex Home Page</A>
 *@subsubsection bison_sub Bisonc++ - parser generator
 *Bisonc++ is a general-purpose parser generator that converts a grammar description for an LALR(1) context-free grammar into a C++ class to parse that grammar.
 *Once you are proficient with bisonc++, you may use it to develop a wide range of language parsers, from those used in simple desk calculators to complex programming languages.
 *Bisonc++ is highly comparable to the program bison++, written by Alain Coetmeur: all properly-written bison++ grammars ought to be convertible to bisonc++ grammars after very little or no change.
 *Anyone familiar with bison++ or its precursor, bison, should be able to use bisonc++ with little trouble. You need to be fluent in using the C++ programming in order to use bisonc++ or to understand this manual.
 *<A HREF="http://bisoncpp.sourceforge.net/">Bisonc++ home page</A>.
 *@subsubsection boost_sub Boost graph library.
 *The library doesn't need to be compiled, you can insert the folder library into project folder:\n
 *@subsubsection graph_sub Graphviz - Graph Visualization
 *Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks.
 *Automatic graph drawing has many important applications in software engineering, database and web design, networking, and in visual interfaces for many other domains.
 *@subsubsection g_comp_sub G++ compiler
 *Another required tool to compile the project is g++.
 *@subsection compile_sub Compiling the project
 *IMPORTANT: do not remove the following files:\n
 *<I>scanner/scanner.h parser/header.h, all files into structure folder</I>
 *@subsubsection comp_flex_sub Using FLex++
 *To convert the flex file into a c++ file we move into <I>scanner</I> folder.\n
 *We type:\n
 *@code flex++ scanner.lex@endcode
 *We create the scanner.cc file. Important to use scanner.cc into c++ mode we use another file scanner.h. That file is not created by flex but by hand, be careful do not delete it.
 *@subsubsection comp_bison_sub Using Bisonc++
 *To convert the bison file <I>.y</I> into a c++ file we move into <I>parser</I> folder.\n
 *@code bisonc++ -V -l grammar.y@endcode
 *That process create many file, but the source code files are: <I>parserbase.h parser.cc parser.h parser.ih</I>
 *There's another file into parser folder <I>header.h</I>. This file included every header needed by parser. I create new file because parser.ih is overwrite every time  by bison process.
 *Important do not delete <I>header.h</I> file.
 *@subsubsection over_sub Overwriting the code
 *Now we open the <I>scanner.cc</I>, we find (without changes the line number is 336):\n
 *@code #define YY_DECL int Scanner::yylex()@endcode
 *we modify into:\n
 *@code #define YY_DECL int Scanner::yylex(ParserBase::STYPE__ *yyval)@endcode
 *We finish the scanner changes and we move into <I>parser</I> folder. We open the <I>parser.h</I>:\n
 *In public members we add:
 *the constructor:\n
 *@code Parser( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 );\@endcode
 *and:
 *@code MyGraph g@endcode
 *\n
 *In the same file we add:\n
 *Constructor implementation:\n
 *@code inline Parser::Parser(std::istream* arg_yyin, std::ostream* arg_yyout)
 *        :d_scanner(arg_yyin, arg_yyout)
 {}@endcode
 *\n
 *We find:\n
 *@code inline int Parser::lex()
 {
 *	  return d_scanner.yylex();
 }@endcode
 *and we modify into:\n
 *@code inline int Parser::lex()
 {
 *      filebuf fb;
 *      fb.open ("counter.xdl",ios::in);
 *      istream is(&fb);
 *      return d_scanner.yylex(&d_val__);
 }@endcode
 *
 *
 */

#ifndef _MYAPP_H
#define	_MYAPP_H

#include <wx/wx.h>
#include <wx/statusbr.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/string.h>
#include <wx/menu.h>
#include <wx/textctrl.h>
#include <wx/grid.h>
#include <wx/sizer.h>
#include <wx/frame.h>
#include "xdl/parser/parser.h"
//#include "structure/mygraph.h"
#include <iomanip>
#include <iostream>

using namespace std;

class MyApp : public wxApp {
public:
    virtual bool OnInit();
private:
    Parser xdl;
};

#endif	/* _MYAPP_H */

IMPLEMENT_APP(MyApp)
